1. Field of the Invention
The present invention relates to a method, system, and program for constructing packets.
2. Description of the Related Art
In a network environment, a network adaptor on a host computer transmits and receives packets using a packet transmission protocol, such as Ethernet, Fibre Channel, Infiniband, Transmission Control Protocol and Internet Protocol (TCP/IP), Internet Small Computer System Interface (iSCSI), etc. Often, the host computer operating system includes a device driver to communicate with the network adaptor hardware to manage Input/Output (I/O) requests to receive and transmit over a network. Data packets received at the network adaptor would be stored in an available allocated packet buffer in the host memory. The host computer further includes a transport protocol driver to process the packets received by the network adaptor that are stored in the packet buffer, and access any I/O commands or data embedded in the packet.
The Infiniband architecture allows for point-to-point communication among connecting multiple independent processor platforms, I/O platforms and I/O devices. Each end point that communicates using the Infiniband architecture maintains one or more queue pairs, where each queue pair includes a send queue and receive queue. A channel adaptor in a host system receives work requests from the host processor that are placed in the send queue. The channel adaptor processes the send queue and translates the work request to one or more packets having headers and payload to transmit to a receive queue on a target I/O node. When a node receives a message, the message is placed in the receive queue. A node maintains a queue pair for each remote node with which it communicates to use the send and receive queues for communication with that specific node.
The end points communicate information to each other through messages transmitted through the queue pair queues, where each message consists of one or more packets. In the Infiniband protocol, each packet has one or more transport headers, may contain a packet payload of the transmitted data, and has one or more error correction codes, such as cycle redundancy check (CRC) bytes.
A channel adaptor assembles the headers and payload into a packet using a single queue for both the headers and payload. In such systems, the channel adaptor would assemble a header in the queue and when the payload is available in the same queue, combine the headers and payload into a packet. Such techniques require sequential processing of first the headers and then the payload to combine into a packet. The error correction code is added after adding the one or more headers and payload to the packet. If there are delays in receiving the payload from the host, then the channel adaptor must wait until the payload is received for the current packet being constructed before generating further headers. Delays in receiving the payload may result in latency delays between consecutive packet builds.